<?php
/**
 * Description of PessoaDAO
 *
 * @author Magno
 */
class PacoteLanceDAO {

    private $conexao;
    public function __construct() {
        $this->conexao = Conexao::getConexao();
    }

    public function salvar($pacoteLance) {

        try {

            if($pacoteLance->getPacoteLanceID() != null && $pacoteLance->getPacoteLanceID() > 0) {
                $statment = $this->conexao->prepare("UPDATE pacoteLance SET
                        quantidade = :quantidade,
                        valor = :valor
                        WHERE pacoteLanceID = :pacoteLanceID");

            }else {
                $statment = $this->conexao->prepare("INSERT INTO pacoteLance(pacoteLanceID,quantidade,valor) VALUES (:pacoteLanceID,:quantidade,:valor);");
            }

            if($statment->execute($pacoteLance->toBD())) {

                if($pacoteLance->getPacoteLanceID() == null || $pacoteLance->getPacoteLanceID() <= 0)
                    $pacoteLance->setPacoteLanceID($this->conexao->lastInsertId());

                return $pacoteLance;
            }else {
                $erros = $statment->errorInfo();
                throw new Exception("Erro PacoteLanceDAO: ".$erros[2]);
            }

        }catch(PDOException $err) {
            throw new Exception("Erro PacoteLanceDAO:".$err->getMessage());
        }

    }

    public function excluir($pacoteLanceID) {

        try {

            $statment = $this->conexao->prepare("DELETE FROM pacoteLance WHERE pacoteLanceID = :pacoteLanceID");
            $statment->bindParam(':pacoteLanceID',$pacoteLanceID);

            if(!$statment->execute()) {
                $erros = $statment->errorInfo();
                throw new Exception("Erro PacoteLanceDAO: ".$erros[2]);
            }

        }catch(PDOException $err) {
            throw new Exception("Erro PacoteLanceDAO:".$err->getMessage());
        }

    }

    public function listar($pagina = 0,$quantidade = -1, $valor = -1) {
        try {

            $limite = Util::getPaginacao($pagina);
            $where = $this->getWhere($quantidade, $valor);
            $pacoteLances = array();
            $statment = $this->conexao->query( "SELECT * FROM pacoteLance e $where $limite" );

            foreach ( $statment->fetchAll(PDO::FETCH_SERIALIZE) as $row )
                $pacoteLances[] = new PacoteLanceBean($row['pacoteLanceID'], $row['quantidade'], $row['valor']);

            return $pacoteLances;

        }catch(PDOException $err) {
            throw new Exception("Erro PacoteLanceDAO:".$err->getMessage());
        }
    }

    public function buscarPorID($pacoteLanceID) {
        try {

            $row = $this->conexao->query( "SELECT * FROM pacoteLance WHERE pacoteLanceID = $pacoteLanceID " )->fetch(PDO::FETCH_SERIALIZE);

            if(isset($row['pacoteLanceID']) && $row['pacoteLanceID'] > 0) {
                $pacoteLance = new PacoteLanceBean($row['pacoteLanceID'], $row['quantidade'], $row['valor']);
                return $pacoteLance;
            }else {
                return null;
            }

        }catch(PDOException $err) {
            throw new Exception("Erro PacoteLanceDAO:".$err->getMessage());
        }
    }

    private function getWhere($quantidade = -1) {
        $where = " WHERE 1 = 1 ";

        if (isset ($quantidade) && $quantidade > 0) {
            $where = $where." AND e.quantidade = $quantidade ";
        }

        return $where;
    }

    public function total($quantidade = -1, $valor = -1) {
        try {

            $where = $this->getWhere($quantidade, $valor);
            $total = $this->conexao->query( "SELECT COUNT(e.pacoteLanceID) total FROM pacoteLance e $where" )->fetch(PDO::FETCH_COLUMN);
            return $total;

        }catch(PDOException $err) {
            throw new Exception("Erro PacoteLanceDAO:".$err->getMessage());
        }
    }

}
?>
